namespace FwkLight.CodeExtensions
{
  public interface IVisitor<T>
  {
    void Visit ( T item );
  }

  public interface IValueReturningVisitor<TValueToReturn, T> : IVisitor<T>
  {
    TValueToReturn GetResult ( );
  }

  public interface IValueReturningVisitor<T>
  {
    T Visit ( T item );
  }

  public interface IMapper<TInput, TOutput>
  {
    void CopyFrom ( TInput source, TOutput destination );
    TOutput MapFrom ( TInput input );
  }
}